﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Web.UI.WebControls;
using vudu.EnlaceDatos.SqlServer;
using vudu.Logica.Clases;
using vudu.PaginasWeb.G6Pensum;

namespace vudu.PaginasWeb.G6Pensum
{
    public partial class ListarPensumNuncaActivados : System.Web.UI.Page
    {
        //
        Pensum pensum = new Pensum();
        SqlServerPensum miServer = new SqlServerPensum();
        List<Pensum> misPensums = new List<Pensum>();
        static Pensum elPensum = new Pensum();
        int idEscuela;
        int numeroDeCheck = 0;
        

        System.Web.UI.WebControls.CheckBox CheckBoxAgregarMateria = new CheckBox();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                Escuela miEscuela = (Escuela)Session["Usuario"];
                nombreEscuela.Text ="Escuela: "+ miEscuela.NombreEscuela;
                Session["idMiEscuela"] = "Escuela: "+miEscuela.IdEscuela;
                idEscuela = miEscuela.IdEscuela;
            }
            catch
            {
                //mensaje.Text = "Error: no se puede conectar con la base de datos";
                //mensaje.CssClass = "mensaje";
                ///mensaje.Visible = true;
            }
            if (!IsPostBack)
            {
                //Se llama al metodo en la base de datos que trae los pensums que nunca han sido activados
                misPensums = miServer.pensumsInactivos(idEscuela);
                //Se llama al metodo que llena el GridView que contendra los pensums a mostrar
                if (misPensums==null) 
                {
                    mensaje0.Text = "No hay pensum disponibles para ser modificados";
                }
                GridView7.DataSource = cargarPensum(misPensums);
                GridView7.DataBind();
            }
        }
        //Metodo que carga el GridView con los pensums que nunca han sido activados
        public DataTable cargarPensum(List<Pensum> listaPensum)
        {
            // Generar la DataTable de la lista de materias
            DataTable table3 = new DataTable();
            //Se define la columna pensum 
            table3.Columns.Add("Pensum", typeof(string));
            //Si no hay pensums inactivos no muestra nada
            if (listaPensum == null)
            {
                listaPensum = new List<Pensum>();
            }
            //Sino se recorre la lista de pensums para rellenar la tabla
            else
            {
                for (int indicePensum = 0; indicePensum < listaPensum.Count; indicePensum++)
                {
                    //Se asigna cada pensum a una fila por medio del id del pensum
                    table3.Rows.Add(listaPensum[indicePensum].IdPensum);
                }
            }
            return table3;
        }
        //Solo se puede elegir una materia a modificar, asi que este metodo valida que solo sea marcado un check
        public int ValidarGridView1()
        {
            //Se recorre todo el GridView por fila
            foreach (GridViewRow row in GridView7.Rows)
            {
                //Se declara un CheckBox que buscara el identificador del checkbox por fila
                CheckBox materiaCheckeada = row.FindControl("chkSeleccionar") as CheckBox;
                //Si el checkbox esta chequeado se suma un contador global de checks
                if (materiaCheckeada.Checked)
                {
                    numeroDeCheck++;
                }
            }
            return numeroDeCheck;
        }
        //Este metodo devuelve la materia que fue seleccionada por medio del checkbox
        public Pensum RecorrerGridView1()
        {
            //Instancio un objeto de tipo Pensum para manejar los pensums de la tabla
            Pensum miPensum = new Pensum();
            //Se recorre todo el GridView por fila
            foreach (GridViewRow row in GridView7.Rows)
            {
                //Se declara un CheckBox que buscara el identificador del checkbox por fila
                CheckBox PensumCheckeado = row.FindControl("chkSeleccionar") as CheckBox;
                //Si el checkbox esta chequeado se guardan los datos del Pensum en el objeto miPensum
                if (PensumCheckeado.Checked)
                {
                    miPensum.IdPensum = Convert.ToInt32(row.Cells[1].Text);
                }
            }
            //Retorna el pensum seleccionado
            return miPensum;
        }
        //Metodo que se activa al presionar el boton de Aceptar al seleccionar un Pensum
        public void Boton2_Onclick(Object sender, EventArgs e)
        {
            //Aqui se llama al metodo que valida cuantos checkboxs han sido seleccionados
            //La variable numeroValidar representa la cantidad de checkbox seleccionados
            int numeroValidar = ValidarGridView1();
            //Si fue seleccionado un solo checkbox se recorre el GridView para buscar la opcion seleccionada
            if (numeroValidar == 1)
            {
                pensum = RecorrerGridView1();
                elPensum = pensum;
                //Se pasa el Pensum seleccionado mediante un session
                Session["pensumAmodificar"] = elPensum;
                //Redirecciona a la siguiente pagina
                Response.Redirect("ModificarPensum.aspx");
            }
            else
            {
                //Muestra el mensaje de cuando se seleccionan mas de un checkbox
                mensaje.Text = "Sólo debe seleccionarse un pensum";
            }
        }
    }
}